package com.gientech.orderseataexercise.controller;

import com.alibaba.fastjson.JSON;
import com.gientech.orderseataexercise.model.Order;
import com.gientech.orderseataexercise.service.OrderSeataService;
import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.math.BigDecimal;
import java.util.List;

@RestController
public class OrderSeataController {

    @Autowired
    private OrderSeataService orderSeataService;

    @Autowired
    public RestTemplate restTemplate;

    /**
     * 新增信息
     */
    @GetMapping("/addOrder")
    @GlobalTransactional
    public String addOrder() {

        // 创建信息
        Order order = new Order();
        order.setProductId("order001"); // 产品ID
        order.setProductName("共享产品001"); // 产品名称
        order.setProductPrice(new BigDecimal(888)); // 产品价格
        order.setProductInfo("共享信息001"); // 产品信息
        order.setProductStatus("1"); // 产品状态
        // 插入信息
        orderSeataService.insertOrderInfo(order);
        // 获取库存新增状态
        String msg = restTemplate.getForObject("http://localhost:8010/addStock" , String.class);

        return msg;
    }

    /**
     * 更新信息
     */
    @GetMapping("/editOrder")
    @GlobalTransactional
    public String editOrder() {

        // 创建信息
        Order order = new Order();
        order.setProductId("order001"); // 产品ID
        order.setProductName("共享产品001修正"); // 产品名称
        order.setProductPrice(new BigDecimal(999)); // 产品价格
        order.setProductInfo("共享信息001修正"); // 产品信息
        order.setProductStatus("1"); // 产品状态
        // 插入信息
        orderSeataService.updateOrderInfo(order);
        // 获取库存更新状态
        String msg = restTemplate.getForObject("http://localhost:8010/editStock" , String.class);

        return msg;
    }

    /**
     * 新增信息
     */
    @GetMapping("/addOrderByExe")
    @GlobalTransactional
    public String addOrderByExe() {

        // 创建信息
        Order order = new Order();
        order.setProductId("order002"); // 产品ID
        order.setProductName("共享产品002"); // 产品名称
        order.setProductPrice(new BigDecimal(666)); // 产品价格
        order.setProductInfo("共享信息002"); // 产品信息
        order.setProductStatus("1"); // 产品状态
        // 插入信息
        orderSeataService.insertOrderInfo(order);
        // 获取库存信息新增状态
        String msg = restTemplate.getForObject("http://localhost:8010/addStock" , String.class);

        String[] orderInfo = new String[3];
        System.out.println(orderInfo[3]);

        return msg;
    }

    /**
     * 更新信息
     * @return
     */
    @GetMapping("/editOrderByExe")
    @GlobalTransactional
    public String editOrderByExe() {

        // 创建信息
        Order order = new Order();
        order.setProductId("order002"); // 产品ID
        order.setProductName("共享产品002修正"); // 产品名称
        order.setProductPrice(new BigDecimal(777)); // 产品价格
        order.setProductInfo("共享信息002修正"); // 产品信息
        order.setProductStatus("1"); // 产品状态
        // 插入信息
        orderSeataService.updateOrderInfo(order);
        // 获取库存更新状态
        String msg = restTemplate.getForObject("http://localhost:8010/editStock" , String.class);

        // 数组越界
        String[] orderInfo = new String[3];
        System.out.println(orderInfo[3]);

        return msg;
    }

    /**
     * 获取信息
     * @return
     */
    @GetMapping("/selectOrder")
    public String selectOrder() {

        // 创建信息
        Order order = new Order();
        // 插入信息
        List<Order> orderList = orderSeataService.selectOrderInfoList(order);

        return JSON.toJSONString(orderList);
    }

}
